package com.uaijug.dengue.core;

import java.util.ArrayList;
import java.util.List;

import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;

import com.google.appengine.api.datastore.Key;
import com.google.appengine.api.datastore.KeyFactory;

@PersistenceCapable
public class Resolucao implements BaseBean<com.uaijug.dengue.entidade.Resolucao> {

	private static final long serialVersionUID = 1L;
	
	@PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
	private Key key;
	@Persistent
	private Usuario resolutor;
	@Persistent
	private String comentario;
	@Persistent(mappedBy = "resolucao")
	private List<Foto> fotos;
	
	public Usuario getResolutor() {
		return resolutor;
	}
	public void setResolutor(Usuario resolutor) {
		this.resolutor = resolutor;
	}
	public String getComentario() {
		return comentario;
	}
	public void setComentario(String comentario) {
		this.comentario = comentario;
	}
	public List<Foto> getFotos() {
		return fotos;
	}
	public void setFotos(List<Foto> fotos) {
		this.fotos = fotos;
	}
	public com.uaijug.dengue.entidade.Resolucao convertToDTO() {
		com.uaijug.dengue.entidade.Resolucao resolucao = new com.uaijug.dengue.entidade.Resolucao();
		resolucao.setId(getKey() != null ? getKey().getId() : null);
		resolucao.setResolutor(getResolutor() != null ? getResolutor().convertToDTO() : null);
		resolucao.setComentario(getComentario());
		resolucao.setFotos(new ArrayList<com.uaijug.dengue.entidade.Foto>());
		if (getFotos() != null && !getFotos().isEmpty()) {
			for (Foto foto : getFotos()) {
				resolucao.getFotos().add(foto.convertToDTO());
			}
		}
		return resolucao;
	}

	@Override
	public void convertToBean(com.uaijug.dengue.entidade.Resolucao objet) {
		if (objet != null) {
			if (objet.getId() != null) {
				setKey(KeyFactory.createKey(Foco.class.getSimpleName(), objet.getId()));
			}
			if (objet.getResolutor() != null) {
				this.resolutor = new Usuario();
				resolutor.convertToBean(objet.getResolutor());
			}
			if (objet.getFotos() != null && !objet.getFotos().isEmpty()) {
				fotos = new ArrayList<Foto>();
				for (com.uaijug.dengue.entidade.Foto fotoDTO : objet.getFotos()) {
					Foto foto = new Foto();
					foto.convertToBean(fotoDTO);
					fotos.add(foto);
				}
			}
			this.comentario = objet.getComentario();
		}
	}

	@Override
	public Key getKey() {
		return key;
	}

	@Override
	public void setKey(Key key) {
		this.key = key;
	}
	
	
}
